package com.example.design.shejimoshi.action.postprocessor;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * <p>
 *
 * </p>
 *
 * @author zsn
 * @version 1.0
 */

//@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AlarmBO  {
    private static final long serialVersionUID = 1L;



    /**
     * 报警开始时间
     */
    private LocalDateTime alarmStartTime;


    /**
     * 报警类型编码
     */
    private String alarmTypeCode;

    /**
     * 报警类型名称
     */
    private String alarmTypeName;

    /**
     * 报警业务分类编码
     */
    private String alarmBizTypeCode;

    /**
     * 报警业务分类名称
     */
    private String alarmBizTypeName;

    /**
     * 报警来源
     */
    private String alarmFrom;

    /**
     * 报警原因-json，不同系统会有不同传入
     * Example:
     * {"desc":"温度 = 40"}
     */
    private String alarmReason;

    /**
     * 处置建议
     */
    private String alarmSuggestion;

    /**
     * 报警条件
     */
    private String alarmCondition;

    /*
    * 空间编码
    * */
    private String spaceCode;

    /*
    * 空间名称
    * */
    private String spaceName;

    /*
    * 空间全称
    * */
    private String spaceFullName;
    /**
     * 设备ID
     */
    private Long deviceId;

    private String busCode;

    private Long categoryId;

    private String categoryNo;

//    @ApiModelProperty(position = 1, value = "树节点类型：1：业务用途，2：设备类型")
//    private Integer nodeType;

    /*
     * 扩展字段-json格式
     * Example:
     * {"deviceTypeCode":"code1"}
     * */
    private String extraInfo;

    /**
     * 告警标识，用于区分不同的告警，如设备告警以sn+规则id的方式生成
     */
    private String alarmCode;

    /*
    * 报警配置ID
    * */
    private Long alarmConfigId;

    private Integer isAi;

    /*
     * 初始化通用告警配置
     * */
    public void initAlarmBO() throws IllegalArgumentException{
        if(this.getAlarmCode()==null){
            throw new IllegalArgumentException("未提供AlarmCode告警标识");
        }
        if (this.getAlarmStartTime() == null) {
            this.setAlarmStartTime(LocalDateTime.now());
        }
    }
}
